Make a VTI domain boot again.
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 9 Feb 2006 15:03:17 +0000 (16:03 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 9 Feb 2006 15:03:17 +0000 (16:03 +0100)
Signed-off-by Anthony Xu <anthony.xu@intel.com>

xen/arch/ia64/linux-xen/irq_ia64.c
xen/arch/ia64/xen/xenirq.c

index 346de4c1673060630140ab8f5e79c810f6ef762f..e5adfa6869f73d03742bfbc39a69480d7c1452eb 100644 (file)
@@ -169,7 +169,7 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs)
         * handler needs to be able to wait for further keyboard interrupts, which can't
         * come through until ia64_eoi() has been done.
         */
-       irq_exit();
+       xen_irq_exit(regs);
 }
 
 #ifdef CONFIG_HOTPLUG_CPU
index e66b8ac05779a6c9a3d2948d3ddbec6b42dfc2ab..283fe40a9fbc3381f76d966b60df61d86dbd2211 100644 (file)
@@ -10,7 +10,6 @@
 #include <asm/hw_irq.h>
 #include <asm/delay.h>
 
-
 void
 xen_debug_irq(ia64_vector vector, struct pt_regs *regs)
 {
@@ -60,11 +59,14 @@ xen_do_IRQ(ia64_vector vector)
 /*
  * Exit an interrupt context. Process softirqs if needed and possible:
  */
-void irq_exit(void)
+void xen_irq_exit(struct pt_regs *regs)
 {
        //account_system_vtime(current);
        sub_preempt_count(IRQ_EXIT_OFFSET);
-       if (!in_interrupt() && local_softirq_pending()) {
+    if((((char *)regs) -(char *) current) != (IA64_STK_OFFSET-IA64_PT_REGS_SIZE))
+        return;
+
+       if (!in_interrupt()&&local_softirq_pending()) {
                add_preempt_count(SOFTIRQ_OFFSET);
                do_softirq();
                sub_preempt_count(SOFTIRQ_OFFSET);